chore: Restore full relative include visibility in WWVegas libraries - #3032
Conversation
Expose Core and game-specific WW3D2 directories through target usage requirements, then remove redundant same-component include qualifiers.
Avoid restoring a WWLib component include directory for a library that is not split across source trees.
bobtista
left a comment
There was a problem hiding this comment.
Looks good to me. I'd squash some of the commits. This makes sense during unification, but maybe mark it as temporary so component-local include paths do not become the general WWVegas convention? eg add a note on corei_ww3d2_include that the two-folder overlay exists because WW3D2 is split across Core and the game halves, and isn't a general WWVegas convention
xezon
left a comment
There was a problem hiding this comment.
CMake setup looks complicated. Only g_ww3d2 and z_ww3d2 need to see the core include folder right? Can pass it from corei_ww3d2 directly?
|
| Filename | Overview |
|---|---|
| Core/Libraries/Source/WWVegas/WW3D2/CMakeLists.txt | Exposes the Core WW3D2 component directory through its interface target so product WW3D2 compilation can resolve shared bare headers. |
| Generals/Code/Libraries/Source/WWVegas/WW3D2/CMakeLists.txt | Prepends the Generals WW3D2 directory privately and updates its precompiled-header spelling without leaking the component root. |
| GeneralsMD/Code/Libraries/Source/WWVegas/WW3D2/CMakeLists.txt | Mirrors the private product-before-Core include arrangement for Zero Hour. |
| Core/Libraries/Source/WWVegas/WWDownload/Download.h | Uses quoted sibling-header includes that remain resolvable relative to the including header’s directory. |
| Core/Libraries/Source/WWVegas/WWLib/DbgHelpLoader.h | Converts same-directory WWLib includes to quoted sibling includes without changing behavior. |
Flowchart
%%{init: {'theme': 'neutral'}}%%
flowchart LR
G["Product WW3D2 target"] -->|PRIVATE: product directory first| P["Product WW3D2 headers"]
G -->|PRIVATE link| C["corei_ww3d2"]
C -->|INTERFACE to product target| H["Core WW3D2 headers"]
V["g_wwvegas / z_wwvegas"] -->|INTERFACE: WWVegas parent| D["Downstream consumers"]
D -->|qualified WW3D2/header.h| P
Reviews (1): Last reviewed commit: "fix(wwvegas): Keep WW3D2 overlay private" | Re-trigger Greptile
Summary
corei_ww3d2carry the Core component directory through the existing private links tog_ww3d2andz_ww3d2; each product target prepends only its own directory.WW3D2/...includes on header edges that cross the Core/product partition, while target-internal same-component includes remain bare.INTERFACE_SOURCESor giving component roots to WWAudio and other consumers.Context
This follows up on #2881 and the WW3D2 unification discussion in #3012. It treats the Core and game-specific halves of WW3D2 as one logical component without restoring broad WWVegas component search paths.
Verification